package Framework.Intermediarios;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import Framework.Entidades.EstadoSeleccionPPC.AgenteEstadoSeleccionPPC;
import Framework.Entidades.EstadoSeleccionPPC.ImplementacionEstadoSeleccionPPC;
import Framework.Utilidades.Criterio;
import Framework.Utilidades.CriterioCompuesto;
import Framework.Utilidades.CriterioSimple;

public class IntermediarioPersistenciaRelacionalEstadoSeleccionPPC extends IntermediarioPersistenciaRelacional{

    @Override
    public String ArmarConsultaSQLSelectOID(String oid) {
        String select = "SELECT * FROM seleccion WHERE OIDSeleccion = '"
				+ oid + "'";
		return select;
    }

    @Override
    public String ArmarConsultaSQLSelectCriterio(Criterio criterios) {
        String select = "";
		if (criterios instanceof CriterioSimple) {
			CriterioSimple criterioSimple = (CriterioSimple) criterios;
			if (criterioSimple.getValor() == null) {
				select = "SELECT * FROM seleccion";
			} else {
				select = "SELECT * FROM seleccion WHERE "
						+ criterioSimple.getAtributo() + " "
						+ criterioSimple.getOperador() + " '"
						+ criterioSimple.getValor() + "'";
			}
			return select; 
		} else if (criterios instanceof CriterioCompuesto) {
			CriterioCompuesto criterioCompuesto = (CriterioCompuesto) criterios;
			CriterioSimple criterioSimple1 = (CriterioSimple) criterioCompuesto
					.getCriterioCompuesto().get(0);
			String operador = (String) criterioCompuesto.getCriterioCompuesto()
					.get(1);
			CriterioSimple criterioSimple2 = (CriterioSimple) criterioCompuesto
					.getCriterioCompuesto().get(2);
			select = "SELECT * FROM seleccion WHERE "
					+ criterioSimple1.getAtributo() + " "
					+ criterioSimple1.getOperador() + " '"
					+ criterioSimple1.getValor() + "' " + operador + " "
					+ criterioSimple2.getAtributo() + " "
					+ criterioSimple2.getOperador() + " '"
					+ criterioSimple2.getValor() + "'";
			return select;
		}
		return select;
    }

    @Override
    public String ArmarConsultaSQLInsert(Object objeto) {
        AgenteEstadoSeleccionPPC agenteEstadoSeleccionPPC = (AgenteEstadoSeleccionPPC) objeto;
		String insert = "INSERT INTO estado_seleccion_ppc (OIDEstado_Seleccion_PPC, codigoEstadoSeleccionPPC, nombreEstadoSeleccionPPC) VALUES ('"
				+ agenteEstadoSeleccionPPC.getOID()
				+ "', '"
				+ agenteEstadoSeleccionPPC.getCodigoEstadoSeleccionPPC()
				+ "', '"
				+ agenteEstadoSeleccionPPC.getNombreEstadoSeleccionPPC()
				+ "')";
		return insert;
    }

    @Override
    public String ArmarConsultaSQLUpdate(Object objeto) {
		AgenteEstadoSeleccionPPC agenteEstadoSeleccionPPC = (AgenteEstadoSeleccionPPC) objeto;
		String update = "UPDATE estado_seleccion_ppc SET codigoEstadoSeleccionPPC = '"
				+ agenteEstadoSeleccionPPC.getCodigoEstadoSeleccionPPC() + "', nombreEstadoSeleccionPPC = '"
				+ agenteEstadoSeleccionPPC.getNombreEstadoSeleccionPPC()
				+ "'";
		return update;
    }

    @Override
    public String ArmarConsultaSQLDelete(Object objeto) {
        AgenteEstadoSeleccionPPC agenteEstadoSeleccionPPC = (AgenteEstadoSeleccionPPC) objeto;
		String delete = "DELETE FROM estado_seleccion_ppc WHERE OIDEstado_Seleccion_PPC = '"
				+ agenteEstadoSeleccionPPC.getOID() + "'";
		return delete;
    }

    @Override
    public ArrayList BuscarObjetosRelacionados(Criterio criterios) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public Object CompletarObjeto(String oid, String clase) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList ConvertirRegistroAObjeto(ResultSet resultSet) {
        
		try {
			ArrayList agentes = new ArrayList();
			while (resultSet.next()) {
				ImplementacionEstadoSeleccionPPC implementacionEstadoSeleccionPPC = new ImplementacionEstadoSeleccionPPC();
				AgenteEstadoSeleccionPPC agenteEstadoSeleccionPPC = new AgenteEstadoSeleccionPPC();
				
				agenteEstadoSeleccionPPC.setImplementacionEstadoSeleccionPPC(implementacionEstadoSeleccionPPC);

				agenteEstadoSeleccionPPC.setOID(resultSet.getString("OIDEstado_Seleccion_PPC"));
				agenteEstadoSeleccionPPC.setEsNuevo(false);
				agenteEstadoSeleccionPPC.setCodigoEstadoSeleccionPPC(resultSet.getString("codigoEstadoSeleccionPPC"));
				agenteEstadoSeleccionPPC.setNombreEstadoSeleccionPPC(resultSet.getString("nombreEstadoSeleccionPPC"));

		
				agentes.add(agenteEstadoSeleccionPPC);
			}
			return agentes;
		} catch (SQLException e) {
			Logger.getLogger(
					IntermediarioPersistenciaRelacional.class.getName()).log(
					Level.SEVERE, null, e);
			return null;
		}
    }

    @Override
    public void GuardarObjetosRelacionados(ArrayList objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}
